perm filename TICTAC.LAP[206,JMC]1 blob
sn#073064 filedate 1973-11-16 generic text, type T, neo UTF8
(DEFPROP TICTACFNS (TRY2 NEWGAME TER IMVAL SUCCESSORS REVERT UPDATE PTS LINES SORT SORTA SORTB SORTC WIN ANSWER →
DOUBLETH THREAT) VALUE)
(LAP NEWGAME SUBR)
(CLEARM 0 (SPECIAL P1) S)
(CLEARM 0 (SPECIAL XS) S)
(CLEARM 0 (SPECIAL OS) S)
(MOVEI 1 (QUOTE (1 2 3 4 5 6 7 10 11)) S)
(MOVEM 1 (SPECIAL BS) S)
(CLEARM 0 (SPECIAL W) S)
(MOVEI 1 (QUOTE 0))
(MOVEM 1 (SPECIAL LEVEL) S)
(MOVEI 1 (QUOTE 0))
(MOVEM 1 (SPECIAL COUNT) S)
(MOVEI 1 (QUOTE (NEW GAME)) S)
(POPJ P)
NIL
(LAP SUBFUN1TER SUBR)
(MOVE 2 1)
(MOVE 1 (SPECIAL PTS) S)
(CALL 2 (E NTH) S)
(HLRZ@ 1 1)
(PUSH P 1)
(MOVE 1 (SPECIAL W) S)
(JUMPE 1 TAG2)
(MOVE 2 (SPECIAL XS) S)
(JRST 0 TAG1)
TAG2 (MOVE 2 (SPECIAL OS) S)
TAG1 (POP P 1)
(JCALL 2 (E CONTAINED) S)
NIL
(LAP TER SUBR)
(PUSH P 1)
(PUSH P 2)
(PUSH P 3)
(JUMPE 1 TAG2)
(MOVEI 2 (QUOTE 11))
(MOVE 1 (SPECIAL LEVEL) S)
(CALL 2 (E EQUAL) S)
(JUMPN 1 TAG1)
(MOVE 2 (SPECIAL LEVEL) S)
(MOVEI 1 (QUOTE 11))
(CALL 2 (E *DIF) S)
(HLRZ@ 2 -1 P)
(CALL 2 (E *LESS) S)
(JUMPN 1 TAG1)
(MOVE 2 (SPECIAL LEVEL) S)
(MOVEI 1 (QUOTE -11))
(CALL 2 (E *PLUS) S)
(HLRZ@ 2 0 P)
(CALL 2 (E *GREAT) S)
(JUMPN 1 TAG1)
(HLRZ@ 2 -2 P)
(MOVE 1 (SPECIAL LINES) S)
(CALL 2 (E NTH) S)
(HLRZ@ 2 1)
(MOVEI 1 (QUOTE SUBFUN1TER) S)
(CALL 2 (E ORLIS) S)
(JUMPN 1 TAG1)
TAG2 (TDZA 1 1)
TAG1 (MOVEI 1 (QUOTE T) S)
(SUB P (C 3 0 3 0))
(POPJ P)
NIL
(LAP SUBFUN1IMVAL SUBR)
(MOVE 2 1)
(MOVE 1 (SPECIAL PTS) S)
(CALL 2 (E NTH) S)
(HLRZ@ 1 1)
(PUSH P 1)
(MOVE 1 (SPECIAL W) S)
(JUMPE 1 TAG2)
(MOVE 2 (SPECIAL XS) S)
(JRST 0 TAG1)
TAG2 (MOVE 2 (SPECIAL OS) S)
TAG1 (POP P 1)
(JCALL 2 (E CONTAINED) S)
NIL
(LAP IMVAL SUBR)
(PUSH P 1)
(HLRZ@ 2 1)
(MOVE 1 (SPECIAL LINES) S)
(CALL 2 (E NTH) S)
(HLRZ@ 2 1)
(MOVEI 1 (QUOTE SUBFUN1IMVAL) S)
(CALL 2 (E ORLIS) S)
(JUMPE 1 TAG2)
(MOVE 1 (SPECIAL W) S)
(JUMPE 1 TAG4)
(MOVE 2 (SPECIAL LEVEL) S)
(MOVEI 1 (QUOTE 12))
(CALL 2 (E *DIF) S)
(JRST 0 TAG3)
TAG4 (MOVE 2 (SPECIAL LEVEL) S)
(MOVEI 1 (QUOTE -12))
(CALL 2 (E *PLUS) S)
TAG3 (JRST 0 TAG1)
TAG2 (MOVEI 1 (QUOTE 0))
TAG1 (SUB P (C 1 0 1 0))
(POPJ P)
NIL
(LAP SUCCESSORS SUBR)
(PUSH P (SPECIAL BS) S)
(PUSH P 1)
(PUSH P (C 0 0 (QUOTE NIL) 0))
(PUSH P (C 0 0 (QUOTE NIL) 0))
(PUSH P (C 0 0 (QUOTE NIL) 0))
TAG1 (MOVE 1 -4 P)
(JUMPE 1 TAG6)
(HLRZ@ 1 -4 P)
(MOVE 2 -3 P)
(CALL 2 (E CONS) S)
(CALL 1 (E NCONS) S)
(MOVEM 1 -2 P)
(MOVE 1 -1 P)
(JUMPE 1 TAG12)
(MOVE 1 -2 P)
(HRRM@ 1 -1 P)
(HRRZ@ 2 -1 P)
(JRST 0 TAG11)
TAG12 (MOVE 2 -2 P)
(MOVEM 2 0 P)
TAG11 (HRRZ@ 1 -4 P)
(MOVEM 1 -4 P)
(MOVEM 2 -1 P)
(JRST 0 TAG1)
TAG6 (MOVE 1 0 P)
(SUB P (C 5 0 5 0))
(JCALL 1 (E SORT) S)
NIL
(LAP REVERT SUBR)
(MOVE 1 (SPECIAL LEVEL) S)
(CALL 1 (E SUB1) S)
(MOVEM 1 (SPECIAL LEVEL) S)
(MOVE 1 (SPECIAL W) S)
(JUMPE 1 TAG5)
(MOVE 1 (SPECIAL XS) S)
(JRST 0 TAG4)
TAG5 (MOVE 1 (SPECIAL OS) S)
TAG4 (MOVE 2 (SPECIAL BS) S)
(HLRZ@ 1 1)
(CALL 2 (E CONS) S)
(MOVEM 1 (SPECIAL BS) S)
(MOVE 1 (SPECIAL W) S)
(JUMPE 1 TAG11)
(HRRZ@ 1 (SPECIAL XS) S)
(MOVEM 1 (SPECIAL XS) S)
(JRST 0 TAG10)
TAG11 (HRRZ@ 1 (SPECIAL OS) S)
(MOVEM 1 (SPECIAL OS) S)
TAG10 (MOVE 1 (SPECIAL W) S)
(JUMPE 1 TAG14)
(TDZA 1 1)
TAG14 (MOVEI 1 (QUOTE T) S)
(MOVEM 1 (SPECIAL W) S)
(HRRZ@ 1 (SPECIAL P1) S)
(MOVEM 1 (SPECIAL P1) S)
(CALL 1 (E NCONS) S)
(MOVEI 2 (QUOTE P1) S)
(CALL 2 (E XCONS) S)
(MOVE 2 (SPECIAL W) S)
(CALL 2 (E XCONS) S)
(MOVEI 2 (QUOTE W) S)
(CALL 2 (E XCONS) S)
(MOVE 2 (SPECIAL BS) S)
(CALL 2 (E XCONS) S)
(MOVEI 2 (QUOTE BS) S)
(CALL 2 (E XCONS) S)
(MOVE 2 (SPECIAL OS) S)
(CALL 2 (E XCONS) S)
(MOVEI 2 (QUOTE OS) S)
(CALL 2 (E XCONS) S)
(MOVE 2 (SPECIAL XS) S)
(CALL 2 (E XCONS) S)
(MOVEI 2 (QUOTE XS) S)
(JCALL 2 (E XCONS) S)
NIL
(LAP UPDATE SUBR)
(PUSH P 1)
(MOVE 1 (SPECIAL LEVEL) S)
(CALL 1 (E ADD1) S)
(MOVEM 1 (SPECIAL LEVEL) S)
(MOVE 1 (SPECIAL W) S)
(JUMPE 1 TAG5)
(MOVE 2 (SPECIAL OS) S)
(MOVE 1 0 P)
(CALL 2 (E CONS) S)
(MOVEM 1 (SPECIAL OS) S)
(JRST 0 TAG4)
TAG5 (MOVE 2 (SPECIAL XS) S)
(MOVE 1 0 P)
(CALL 2 (E CONS) S)
(MOVEM 1 (SPECIAL XS) S)
TAG4 (MOVE 2 (SPECIAL BS) S)
(MOVE 1 0 P)
(CALL 2 (E DELETE) S)
(MOVEM 1 (SPECIAL BS) S)
(MOVE 2 (SPECIAL P1) S)
(MOVE 1 0 P)
(CALL 2 (E CONS) S)
(MOVEM 1 (SPECIAL P1) S)
(MOVE 1 (SPECIAL W) S)
(JUMPE 1 TAG10)
(TDZA 1 1)
TAG10 (MOVEI 1 (QUOTE T) S)
(MOVEM 1 (SPECIAL W) S)
(MOVE 1 (SPECIAL COUNT) S)
(CALL 1 (E ADD1) S)
(MOVEM 1 (SPECIAL COUNT) S)
(MOVE 1 (SPECIAL P1) S)
(CALL 1 (E NCONS) S)
(MOVEI 2 (QUOTE P1) S)
(CALL 2 (E XCONS) S)
(MOVE 2 (SPECIAL W) S)
(CALL 2 (E XCONS) S)
(MOVEI 2 (QUOTE W) S)
(CALL 2 (E XCONS) S)
(MOVE 2 (SPECIAL BS) S)
(CALL 2 (E XCONS) S)
(MOVEI 2 (QUOTE BS) S)
(CALL 2 (E XCONS) S)
(MOVE 2 (SPECIAL OS) S)
(CALL 2 (E XCONS) S)
(MOVEI 2 (QUOTE OS) S)
(CALL 2 (E XCONS) S)
(MOVE 2 (SPECIAL XS) S)
(CALL 2 (E XCONS) S)
(MOVEI 2 (QUOTE XS) S)
(SUB P (C 1 0 1 0))
(JCALL 2 (E XCONS) S)
NIL
(DEFPROP PTS (NIL (1 2 3) (4 5 6) (7 10 11) (1 4 7) (2 5 10) (3 6 11) (1 5 11) (3 5 7)) VALUE)
(DEFPROP LINES (NIL (1 4 7) (1 5) (1 6 10) (2 4) (2 5 7 10) (2 6) (3 4 10) (3 5) (3 6 7)) VALUE)
(LAP SORT SUBR)
(MOVEI 3 (QUOTE NIL))
(MOVEI 2 (QUOTE NIL))
(JCALL 3 (E SORTA) S)
NIL
(LAP SORTA SUBR)
(PUSH P 1)
(PUSH P 2)
(PUSH P 3)
(JUMPN 1 TAG2)
(MOVE 2 3)
(MOVE 1 -1 P)
(CALL 2 (E *APPEND) S)
(JRST 0 TAG1)
TAG2 (HLRZ@ 1 1)
(CALL 1 (E WIN) S)
(JUMPE 1 TAG4)
(HLRZ@ 1 -2 P)
(CALL 1 (E NCONS) S)
(JRST 0 TAG1)
TAG4 (HLRZ@ 1 -2 P)
(CALL 1 (E ANSWER) S)
(JUMPE 1 TAG5)
(HLRZ@ 2 -2 P)
(HRRZ@ 1 -2 P)
(CALL 2 (E SORTB) S)
(JRST 0 TAG1)
TAG5 (HLRZ@ 1 -2 P)
(CALL 1 (E DOUBLETH) S)
(JUMPE 1 TAG6)
(HLRZ@ 2 -2 P)
(HRRZ@ 1 -2 P)
(CALL 2 (E SORTC) S)
(JRST 0 TAG1)
TAG6 (HLRZ@ 1 -2 P)
(CALL 1 (E THREAT) S)
(JUMPE 1 TAG7)
(MOVE 2 -1 P)
(HLRZ@ 1 -2 P)
(CALL 2 (E CONS) S)
(MOVE 3 0 P)
(MOVE 2 1)
(HRRZ@ 1 -2 P)
(CALL 3 (E SORTA) S)
(JRST 0 TAG1)
TAG7 (MOVE 2 0 P)
(HLRZ@ 1 -2 P)
(CALL 2 (E CONS) S)
(MOVE 3 1)
(MOVE 2 -1 P)
(HRRZ@ 1 -2 P)
(CALL 3 (E SORTA) S)
TAG1 (SUB P (C 3 0 3 0))
(POPJ P)
NIL
(LAP SORTB SUBR)
(PUSH P 1)
(PUSH P 2)
(JUMPN 1 TAG2)
(MOVE 1 2)
(CALL 1 (E NCONS) S)
(JRST 0 TAG1)
TAG2 (HLRZ@ 1 1)
(CALL 1 (E WIN) S)
(JUMPE 1 TAG4)
(HLRZ@ 1 -1 P)
(CALL 1 (E NCONS) S)
(JRST 0 TAG1)
TAG4 (MOVE 2 0 P)
(HRRZ@ 1 -1 P)
(CALL 2 (E SORTB) S)
TAG1 (SUB P (C 2 0 2 0))
(POPJ P)
NIL
(LAP SORTC SUBR)
(PUSH P 1)
(PUSH P 2)
(JUMPN 1 TAG2)
(MOVE 1 2)
(CALL 1 (E NCONS) S)
(JRST 0 TAG1)
TAG2 (HLRZ@ 1 1)
(CALL 1 (E WIN) S)
(JUMPE 1 TAG4)
(HLRZ@ 1 -1 P)
(CALL 1 (E NCONS) S)
(JRST 0 TAG1)
TAG4 (HLRZ@ 1 -1 P)
(CALL 1 (E ANSWER) S)
(JUMPE 1 TAG5)
(HLRZ@ 2 -1 P)
(HRRZ@ 1 -1 P)
(CALL 2 (E SORTB) S)
(JRST 0 TAG1)
TAG5 (MOVE 2 0 P)
(HRRZ@ 1 -1 P)
(CALL 2 (E SORTC) S)
TAG1 (SUB P (C 2 0 2 0))
(POPJ P)
NIL
(LAP SUBFUN1WIN SUBR)
(MOVE 2 1)
(MOVE 1 (SPECIAL PTS) S)
(CALL 2 (E NTH) S)
(PUSH P 1)
(HLRZ@ 1 (SPECIAL P) S)
(PUSH P 1)
(HLRZ@ 1 -1 P)
(MOVEM 1 -1 P)
(MOVE 1 (SPECIAL W) S)
(JUMPE 1 TAG2)
(MOVE 2 (SPECIAL OS) S)
(JRST 0 TAG1)
TAG2 (MOVE 2 (SPECIAL XS) S)
TAG1 (POP P 1)
(CALL 2 (E CONS) S)
(MOVE 2 1)
(POP P 1)
(JCALL 2 (E CONTAINED) S)
NIL
(LAP WIN SUBR)
(JSP 6 SPECBIND)
(0 1 (SPECIAL P) S)
(HLRZ@ 2 1)
(MOVE 1 (SPECIAL LINES) S)
(CALL 2 (E NTH) S)
(HLRZ@ 2 1)
(MOVEI 1 (QUOTE SUBFUN1WIN) S)
(CALL 2 (E ORLIS) S)
(JRST 0 SPECSTR)
NIL
(LAP SUBFUN1ANSWER SUBR)
(MOVE 2 1)
(MOVE 1 (SPECIAL PTS) S)
(CALL 2 (E NTH) S)
(PUSH P 1)
(HLRZ@ 1 (SPECIAL P) S)
(PUSH P 1)
(HLRZ@ 1 -1 P)
(MOVEM 1 -1 P)
(MOVE 1 (SPECIAL W) S)
(JUMPE 1 TAG2)
(MOVE 2 (SPECIAL XS) S)
(JRST 0 TAG1)
TAG2 (MOVE 2 (SPECIAL OS) S)
TAG1 (POP P 1)
(CALL 2 (E CONS) S)
(MOVE 2 1)
(POP P 1)
(JCALL 2 (E CONTAINED) S)
NIL
(LAP ANSWER SUBR)
(JSP 6 SPECBIND)
(0 1 (SPECIAL P) S)
(HLRZ@ 2 1)
(MOVE 1 (SPECIAL LINES) S)
(CALL 2 (E NTH) S)
(HLRZ@ 2 1)
(MOVEI 1 (QUOTE SUBFUN1ANSWER) S)
(CALL 2 (E ORLIS) S)
(JRST 0 SPECSTR)
NIL
(LAP SUBFUN1SUBFUN1THREAT SUBR)
(MOVE 2 1)
(MOVE 1 (SPECIAL PTS) S)
(CALL 2 (E NTH) S)
(PUSH P 1)
(HLRZ@ 1 (SPECIAL P) S)
(PUSH P 1)
(HLRZ@ 1 -1 P)
(PUSH P (SPECIAL SQ) S)
(MOVEM 1 -2 P)
(MOVE 1 (SPECIAL W) S)
(JUMPE 1 TAG2)
(MOVE 2 (SPECIAL OS) S)
(JRST 0 TAG1)
TAG2 (MOVE 2 (SPECIAL XS) S)
TAG1 (MOVE 1 -1 P)
(CALL 2 (E CONS) S)
(POP P 2)
(CALL 2 (E XCONS) S)
(MOVE 2 1)
(EXCH 1 -1 P)
(SUB P (C 2 0 2 0))
(JCALL 2 (E CONTAINED) S)
NIL
(LAP SUBFUN1THREAT SUBR)
(JSP 6 SPECBIND)
(0 1 (SPECIAL SQ) S)
(MOVE 2 1)
(MOVE 1 (SPECIAL LINES) S)
(CALL 2 (E NTH) S)
(HLRZ@ 2 1)
(MOVEI 1 (QUOTE SUBFUN1SUBFUN1THREAT) S)
(CALL 2 (E ORLIS) S)
(JRST 0 SPECSTR)
NIL
(LAP THREAT SUBR)
(JSP 6 SPECBIND)
(0 1 (SPECIAL P) S)
(MOVE 2 (SPECIAL BS) S)
(HLRZ@ 1 1)
(CALL 2 (E DELETE) S)
(MOVE 2 1)
(MOVEI 1 (QUOTE SUBFUN1THREAT) S)
(CALL 2 (E ORLIS) S)
(JRST 0 SPECSTR)
NIL
(LAP SUBFUN1SUBFUN1DOUBLETH SUBR)
(MOVE 2 1)
(MOVE 1 (SPECIAL PTS) S)
(CALL 2 (E NTH) S)
(PUSH P 1)
(HLRZ@ 1 (SPECIAL P) S)
(PUSH P 1)
(HLRZ@ 1 -1 P)
(PUSH P (SPECIAL SQ) S)
(MOVEM 1 -2 P)
(MOVE 1 (SPECIAL W) S)
(JUMPE 1 TAG2)
(MOVE 2 (SPECIAL OS) S)
(JRST 0 TAG1)
TAG2 (MOVE 2 (SPECIAL XS) S)
TAG1 (MOVE 1 -1 P)
(CALL 2 (E CONS) S)
(POP P 2)
(CALL 2 (E XCONS) S)
(MOVE 2 1)
(EXCH 1 -1 P)
(SUB P (C 2 0 2 0))
(JCALL 2 (E CONTAINED) S)
NIL
(LAP SUBFUN1DOUBLETH SUBR)
(JSP 6 SPECBIND)
(0 1 (SPECIAL SQ) S)
(MOVE 2 1)
(MOVE 1 (SPECIAL LINES) S)
(CALL 2 (E NTH) S)
(HLRZ@ 2 1)
(MOVEI 1 (QUOTE SUBFUN1SUBFUN1DOUBLETH) S)
(CALL 2 (E ORLIS) S)
(JRST 0 SPECSTR)
NIL
(LAP DOUBLETH SUBR)
(JSP 6 SPECBIND)
(0 1 (SPECIAL P) S)
(MOVE 2 (SPECIAL BS) S)
(HLRZ@ 1 1)
(CALL 2 (E DELETE) S)
(MOVE 2 1)
(MOVEI 1 (QUOTE SUBFUN1DOUBLETH) S)
(CALL 2 (E TWOLIS) S)
(JRST 0 SPECSTR)
NIL
(LAP TWOLIS SUBR)
(PUSH P 1)
(PUSH P 2)
(JUMPE 2 TAG2)
(HLRZ@ 1 2)
(CALLF@ 1 -1 P)
(JUMPE 1 TAG10)
(HRRZ@ 2 0 P)
(MOVE 1 -1 P)
(CALL 2 (E ORLIS) S)
(JUMPN 1 TAG1)
TAG10 (HRRZ@ 2 0 P)
(MOVE 1 -1 P)
(CALL 2 (E TWOLIS) S)
(JUMPN 1 TAG1)
TAG2 (TDZA 1 1)
TAG1 (MOVEI 1 (QUOTE T) S)
(SUB P (C 2 0 2 0))
(POPJ P)
NIL